---
slug: /ru/sql-reference/functions/math-functions
sidebar_position: 44
sidebar_label: "Математические функции"
---

# Математические функции {#matematicheskie-funktsii}

Все функции возвращают число типа Float64. Точность результата близка к максимально возможной, но результат может не совпадать с наиболее близким к соответствующему вещественному числу машинно представимым числом.

## e() {#e}

Возвращает число типа Float64, близкое к числу e.

## pi() {#pi}

Возвращает число типа Float64, близкое к числу π.

## exp(x) {#expx}

Принимает числовой аргумент, возвращает число типа Float64, близкое к экспоненте от аргумента.

## log(x) {#logx}

Принимает числовой аргумент, возвращает число типа Float64, близкое к натуральному логарифму от аргумента.

## exp2(x) {#exp2x}

Принимает числовой аргумент, возвращает число типа Float64, близкое к 2 в степени x.

## log2(x) {#log2x}

Принимает числовой аргумент, возвращает число типа Float64, близкое к двоичному логарифму от аргумента.

## exp10(x) {#exp10x}

Принимает числовой аргумент, возвращает число типа Float64, близкое к 10 в степени x.

## log10(x) {#log10x}

Принимает числовой аргумент, возвращает число типа Float64, близкое к десятичному логарифму от аргумента.

## sqrt(x) {#sqrtx}

Принимает числовой аргумент, возвращает число типа Float64, близкое к квадратному корню от аргумента.

## cbrt(x) {#cbrtx}

Принимает числовой аргумент, возвращает число типа Float64, близкое к кубическому корню от аргумента.

## erf(x) {#erfx}

Если x неотрицательно, то erf(x / σ√2) - вероятность того, что случайная величина, имеющая нормальное распределение со среднеквадратичным отклонением σ, принимает значение, отстоящее от мат. ожидания больше чем на x.

Пример (правило трёх сигм):

``` sql
SELECT erf(3 / sqrt(2));
```

``` text
┌─erf(divide(3, sqrt(2)))─┐
│      0.9973002039367398 │
└─────────────────────────┘
```

## erfc(x) {#erfcx}

Принимает числовой аргумент, возвращает число типа Float64, близкое к 1 - erf(x), но без потери точности для больших x.

## lgamma(x) {#lgammax}

Логарифм от гамма функции.

## tgamma(x) {#tgammax}

Гамма функция.

## sin(x) {#sinx}

Синус.

## cos(x) {#cosx}

Косинус.

## tan(x) {#tanx}

Тангенс.

## asin(x) {#asinx}

Арксинус.

## acos(x) {#acosx}

Арккосинус.

## atan(x) {#atanx}

Арктангенс.

## pow(x, y) {#powx-y}

Принимает два числовых аргумента x и y. Возвращает число типа Float64, близкое к x в степени y.

## cosh(x) {#coshx}

[Гиперболический косинус](https://help.scilab.org/docs/5.4.0/ru_RU/cosh.html).

**Синтаксис**

``` sql
cosh(x)
```

**Аргументы**

-   `x` — угол в радианах. Значения из интервала: `-∞ < x < +∞`. [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Возвращаемое значение**

-   Значения из интервала: `1 <= cosh(x) < +∞`.

Тип: [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Пример**

Запрос:

``` sql
SELECT cosh(0);
```

Результат:

``` text
┌─cosh(0)──┐
│        1 │
└──────────┘
```

## acosh(x) {#acoshx}

[Обратный гиперболический косинус](https://help.scilab.org/docs/5.4.0/ru_RU/acosh.html).

**Синтаксис**

``` sql
acosh(x)
```

**Аргументы**

-   `x` — гиперболический косинус угла. Значения из интервала: `1 <= x < +∞`. [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Возвращаемое значение**

-   Угол в радианах. Значения из интервала: `0 <= acosh(x) < +∞`.

Тип: [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Пример**

Запрос:

``` sql
SELECT acosh(1);
```

Результат:

``` text
┌─acosh(1)─┐
│        0 │
└──────────┘
```

**Смотрите также**

-   [cosh(x)](../../sql-reference/functions/math-functions.md#coshx)

## sinh(x) {#sinhx}

[Гиперболический синус](https://help.scilab.org/docs/5.4.0/ru_RU/sinh.html).

**Синтаксис**

``` sql
sinh(x)
```

**Аргументы**

-   `x` — угол в радианах. Значения из интервала: `-∞ < x < +∞`. [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Возвращаемое значение**

-   Значения из интервала: `-∞ < sinh(x) < +∞`.

Тип: [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Пример**

Запрос:

``` sql
SELECT sinh(0);
```

Результат:

``` text
┌─sinh(0)──┐
│        0 │
└──────────┘
```

## asinh(x) {#asinhx}

[Обратный гиперболический синус](https://help.scilab.org/docs/5.4.0/ru_RU/asinh.html).

**Синтаксис**

``` sql
asinh(x)
```

**Аргументы**

-   `x` — гиперболический синус угла. Значения из интервала: `-∞ < x < +∞`. [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Возвращаемое значение**

-   Угол в радианах. Значения из интервала: `-∞ < asinh(x) < +∞`.

Тип: [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Пример**

Запрос:

``` sql
SELECT asinh(0);
```

Результат:

``` text
┌─asinh(0)─┐
│        0 │
└──────────┘
```

**Смотрите также**

-   [sinh(x)](../../sql-reference/functions/math-functions.md#sinhx)

## atanh(x) {#atanhx}

[Обратный гиперболический тангенс](https://help.scilab.org/docs/5.4.0/ru_RU/atanh.html).

**Синтаксис**

``` sql
atanh(x)
```

**Аргументы**

-   `x` — гиперболический тангенс угла. Значения из интервала: `–1 < x < 1`. [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Возвращаемое значение**

-   Угол в радианах. Значения из интервала: `-∞ < atanh(x) < +∞`.

Тип: [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Пример**

Запрос:

``` sql
SELECT atanh(0);
```

Результат:

``` text
┌─atanh(0)─┐
│        0 │
└──────────┘
```

## atan2(y, x) {#atan2yx}

[Функция](https://msoffice-prowork.com/ref/excel/excelfunc/math/atan2/) вычисляет угол в радианах между положительной осью x и линией, проведенной из начала координат в точку `(x, y) ≠ (0, 0)`.

**Синтаксис**

``` sql
atan2(y, x)
```

**Аргументы**

-   `y` — координата y точки, в которую проведена линия. [Float64](../../sql-reference/data-types/float.md#float32-float64).
-   `x` — координата х точки, в которую проведена линия. [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Возвращаемое значение**

-   Угол `θ` в радианах из интервала: `−π < θ ≤ π`.

Тип: [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Пример**

Запрос:

``` sql
SELECT atan2(1, 1);
```

Результат:

``` text
┌────────atan2(1, 1)─┐
│ 0.7853981633974483 │
└────────────────────┘
```

## hypot(x, y) {#hypotxy}

Вычисляет длину гипотенузы прямоугольного треугольника. При использовании этой [функции](https://php.ru/manual/function.hypot.html) не возникает проблем при возведении в квадрат очень больших или очень малых чисел.

**Синтаксис**

``` sql
hypot(x, y)
```

**Аргументы**

-   `x` — первый катет прямоугольного треугольника. [Float64](../../sql-reference/data-types/float.md#float32-float64).
-   `y` — второй катет прямоугольного треугольника. [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Возвращаемое значение**

-   Длина гипотенузы прямоугольного треугольника.

Тип: [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Пример**

Запрос:

``` sql
SELECT hypot(1, 1);
```

Результат:

``` text
┌────────hypot(1, 1)─┐
│ 1.4142135623730951 │
└────────────────────┘
```

## log1p(x) {#log1px}

Вычисляет `log(1+x)`. [Функция](https://help.scilab.org/docs/6.0.1/ru_RU/log1p.html) `log1p(x)` является более точной, чем функция `log(1+x)` для малых значений x.

**Синтаксис**

``` sql
log1p(x)
```

**Аргументы**

-   `x` — значения из интервала: `-1 < x < +∞`. [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Возвращаемое значение**

-   Значения из интервала: `-∞ < log1p(x) < +∞`.

Тип: [Float64](../../sql-reference/data-types/float.md#float32-float64).

**Пример**

Запрос:

``` sql
SELECT log1p(0);
```

Результат:

``` text
┌─log1p(0)─┐
│        0 │
└──────────┘
```

**Смотрите также**

-   [log(x)](../../sql-reference/functions/math-functions.md#logx)

## sign(x) {#signx}

Возвращает знак действительного числа.

**Синтаксис**

``` sql
sign(x)
```

**Аргумент**

-   `x` — Значения от  `-∞` до `+∞`. Любой числовой тип, поддерживаемый ClickHouse.

**Возвращаемое значение**

- -1 если `x < 0`
-  0 если `x = 0`
-  1 если `x > 0`

**Примеры**

Результат sign() для нуля:

``` sql
SELECT sign(0);
```
Результат:

``` text
┌─sign(0)─┐
│       0 │
└─────────┘
```

Результат sign() для положительного аргумента:

``` sql
SELECT sign(1);
```

Результат:

``` text
┌─sign(1)─┐
│       1 │
└─────────┘
```

Результат sign() для отрицательного аргумента:

``` sql
SELECT sign(-1);
```

Результат:

``` text
┌─sign(-1)─┐
│       -1 │
└──────────┘
```
